package main.leetcode.clockin.May;

import main.datastruc.TreeNode;

/**
 * 98.验证二叉搜索树
 *
 * <p>给定一个二叉树，判断其是否是一个有效的二叉搜索树。
 *
 * <p>假设一个二叉搜索树具有如下特征：
 *
 * <p>节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。
 *
 * <p>来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/validate-binary-search-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class day5 {
    private long last = Long.MIN_VALUE;

    public static void main(String[] args) {
        //        TreeNode root = TreeNode.creCmpBTree(new int[] {2, 1, 1});
        TreeNode root = TreeNode.creCmpBTree(new int[] {-2147483648});
    }

    public boolean isValidBST(TreeNode root) {
        if (root == null) {
            return true;
        }
        boolean left = isValidBST(root.left);
        if (root.val < last) {
            return false;
        }
        last = root.val;
        boolean right = isValidBST(root.right);
        return left && right;
    }
}
